函数指针及其定义和用法,C语言函数指针详解

您所在的位置:网站首页 c语言 定义函数指针 函数指针及其定义和用法,C语言函数指针详解

函数指针及其定义和用法,C语言函数指针详解

2022-06-04 20:57| 来源: 网络整理| 查看: 265

函数指针及其定义和用法,C语言函数指针详解

优点是:有的通用函数中要涉用到另一个函数,但函数名称未定,是让用户编的。因为函数指针只指定了函数的参数列表,没有指定函数名称。使用更灵活,函数指针也可以作为函数参数传递,作为回调函数,这样定义时不用指定函数名了。

函数指针其实就是一种特殊的指针——指向一个函数的指针。在很多高级语言中,它的思想是很重要的,尤其是它的“回调函数”,所以理解它是很有必要的。提供调用的灵活性。设计好了一个函数框架,但是设计初期并不知道自己的函数会被如何使用。比如C的”stdlib”中声明的qsort函数,用来对数值进行排序。显然,顺序还是降序,元素谁大谁小这些问题,库程序员在编写qsort的时候不可能决定。这些问题是要在用户调用这个函数的时候才能够决定。那边qsort如何保证通用性和灵活性呢?采用的办法是让函数的使用者来制定排序规则。于是调用者应该自己设计comparator函数,传给qsort函数。这就在程序设计初期保证了灵活性。尽管使用函数指针使得程序有些难懂,但是这样的牺牲还是值得的。

int Func(int x); /*声明一个函数*/ int (*p) (int x); /*定义一个函数指针*/ p = Func; /*将Func函数的首地址赋给指针变量p*/

赋值时函数 Func 不带括号,也不带参数。由于函数名 Func 代表函数的首地址,因此经过赋值以后,指针变量 p 就指向函数 Func() 代码的首地址了。

# include int Max(int, int); //函数声明 int main(void) { int(*p)(int, int); //定义一个函数指针 int a, b, c; p = Max; //把函数Max赋给指针变量p, 使p指向Max函数 printf("please enter a and b:"); scanf("%d%d", &a, &b); c = (*p)(a, b); //通过函数指针调用Max函数 printf("a = %d\nb = %d\nmax = %d\n", a, b, c); return 0; } int Max(int x, int y) //定义Max函数 { int z; if (x > y) { z = x; } else { z = y; } return z; }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3